iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Software Development

Laravel專案練習-寶可夢管理系統系列 第 9

Day9部署練習-專案上傳(使用git hub)

  • 分享至 

  • xImage
  •  

整個專案上傳過程遇到蠻多問題, 雖然說這個可能自己多設定幾次就會熟悉了, 但我還是想說如果可以把過程記錄下來的話, 是不是當你久沒設定訂的時候,可以有一個這樣的流程好讓自己勾起回憶, 讓部屬的時間快一些些。

以下是我自己上傳專案到雲端主機的一個步驟:

專案上傳步驟

Step 1: 初始化本地專案


git init

Step 2: 創建新的遠程倉庫(repository)

這部分通常在GitHub的網頁界面完成。你需要登入GitHub,然後選擇「New Repository」,填入相關資訊後,建立新的repository。

Step 3: 創建remote到遠程倉庫(repository)

如果是第一次push, 需要設定遠端倉庫的代稱, 這樣在push的時候,就可以根據這個repostory的代稱上傳到對應的地方。如果不確定有哪些remote有建立, 可以用 git remote -v。

  • HTTPS:

    
    git remote add origin https://github.com/你的使用者名稱/你的倉庫名稱.git
    
    
  • SSH:
    首先,你需要設定SSH Key,並將公鑰添加到GitHub。然後使用以下指令:

    
    git remote add origin git@github.com:你的使用者名稱/你的倉庫名稱.git
    
    
  • 如果是用clone的:

    舉例來說,假設您克隆了兩個不同的遠端倉庫:

    1. git clone https://github.com/user/repo1.git - 這會在您的本地電腦上創建一個名為 repo1 的目錄,並在其中包含一個 .git 子目錄。如果您進入這個目錄並執行 git remote -v,您將會看到 origin 指向 https://github.com/user/repo1.git
    2. git clone https://github.com/user/repo2.git - 這會在您的本地電腦上創建一個名為 repo2 的目錄,並在其中包含一個 .git 子目錄。如果您進入這個目錄並執行 git remote -v,您將會看到 origin 指向 https://github.com/user/repo2.git

    所以,儘管兩個不同的本地倉庫都有一個名為 origin 的遠端,但它們實際上指向了不同的位置。您可以透過當前目錄(即您當前所在的本地倉庫)來區分它們。

Step 4: 提交與推送更改至GitHub

首先,將所有的變更加入staging區域:

git add .

接著,提交這些變更:


git commit -m "你的提交訊息"

最後,推送這些變更到GitHub的遠程倉庫:


git push -u origin master

這裡假設你正在推送到master分支,你可以根據實際情況替換為其他分支名稱。

其實在上述輸入後會要求你輸入使用者名稱及密碼。

但是在輸入密碼的部分, 不管是用SSH還是Https連接, github都不支援用使用者密碼登入了,取而代之的是用以下方法代替密碼:

設定密碼:

  • Token:

    從GitHub的設定中生成一個新的token。然後使用HTTPS的方式,但在URL中插入token作為密碼。

    • 如何產生token:

      到git hub點選右上角大頭貼→找到setting→Developer setting→然後Personal access tokens (classic)點進去後就可以創建token並設定相關權限。

      之後便會產生一整段token, 將這部分在前面提到的push時候會要求輸入密碼的部分, 輸入token就可以了。

      更詳細的token設定我建議可以到以下網址:

      https://mintrabbitplus.com/2023/03/08/github-token-的設定/

  • 用RSA密鑰:
    這基本上與SSH是相同的,你只是使用RSA為SSH的密鑰類型。

    基本流程:

    生成SSH密鑰

    1. 打開終端機(Terminal): 開啟你的命令列或終端機。

    2. 輸入以下命令:

      
      ssh-keygen -t rsa -b 4096 -C "你的電子郵件地址"
      
    3. 按Enter:當系統請求你「Enter a file in which to save the key」時,直接按Enter,這表示你將使用默認的位置和檔案名稱。

    4. 設定passphrase (可選):輸入一個密碼(或者留空)然後再次輸入以確認。

    5. 私鑰的保管:

      私鑰是你身份的密碼表示,允許你取得與公鑰配對的加密資料。任何持有你的私鑰的人都可以代表你的身份進行數位簽名和解密訊息,因此你必須保護好它。以下是一些建議:

      1. 存儲位置

        • 默認情況下,私鑰存放於 ~/.ssh/id_rsa。這個位置在大多數系統上都有適當的權限設置,使其只能被檔案的擁有者讀取。
        • 你應該避免移動私鑰到其他目錄,除非你確定新位置同樣安全。
        • 而且集中放在這個目錄,系統預設會來這個地方找密鑰。
      2. 文件權限

        • 確保私鑰文件的權限設置為 600,這意味著只有檔案擁有者可以讀取和寫入,其他用戶都不能訪問。你可以使用以下命令來設置:

          
          chmod 600 ~/.ssh/id_rsa
          
          

    將SSH公鑰加入到GitHub

    1. 打開公鑰:

      
      cat ~/.ssh/id_rsa.pub
      
      
    2. 複製公鑰:這會顯示你的公鑰,使用滑鼠選取並複製它。

    3. 登入GitHub:打開瀏覽器,前往GitHub並登入你的帳戶。

    4. 設定頁面:點擊右上角的頭像,從下拉選單中選擇「Settings」。

    5. SSH and GPG keys:在左側選單中點擊「SSH and GPG keys」。

    6. 新增SSH key:點擊「New SSH key」。

    7. 輸入公鑰:在「Title」中輸入一個識別名稱,如「My Laptop」。在「Key」中,貼上剛剛複製的公鑰。

    8. 儲存:點擊「Add SSH key」。

      到這個階段如果前面你有設置好遠端倉庫, 就可以進行連接了。

      • 疑問:

        其實我自己做到這裡是沒有問題的, 但我自己是好奇

        • 他是如何讀取到私鑰的?

          當使用OpenSSH時,默認的私鑰位置是在**~/.ssh/id_rsa**。

        • 如果我今天私鑰很多把,他要如何知道要用哪把去做驗證?

          1. 配置~/.ssh/config文件: 你可以在此文件中為不同的主機設置不同的私鑰。例如:

            //這個是你主機的ip
            Host 54.238.70.16
                IdentityFile ~/.ssh/aws.pem
                User ubuntu
            //User部看你是用什麼AMI
            
            # GitHub
            Host github.com
                IdentityFile ~/.ssh/id_rsa
                User git
            //上下兩個是固定的, 只要調整中間的鑰匙位置
            

            上面的設置告訴SSH,當連接到**github.com時,使用~/.ssh/id_rsa_github這把私鑰,而連接到anothergit.com時,使用~/.ssh/id_rsa_anothergit**這把私鑰。

          2. 指定私鑰: 當使用**gitssh**命令時,你可以明確指定要使用的私鑰。例如:

            
            ssh -i ~/.ssh/my_other_key git@github.com
            
            

    結語

    一開始做的時候其實光要成功連線成功上傳就覺得很麻煩了,很懶得再做筆記,但有些東西(比如踩過的坑),既然都花了那麼多時間了,記錄一下,幫下次再用的時候省點時間我覺得這樣的方式也不錯。


上一篇
Day8 寶可夢專案-部署練習-SSH遠程調用
下一篇
Day10 寶可夢專案-部署練習-虛擬伺服器軟體安裝-PHP
系列文
Laravel專案練習-寶可夢管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言